# 人生重开模拟器
import random
import sys
import time

print('+-------------------------------+')
print('|                               |')
print('|                               |')
print('|        人生重开模拟器         |')
print('|                               |')
print('+-------------------------------+')

# 设置初始属性
# 颜值,体质,智力,家境,总和不能超过20,每一项取值都是1-10之间
while True:
    # 输入错误重新输入
    # 输入正确时通过break跳出循环
    print("请设置初始属性(可用点数总数为 20)")
    face = int(input("请输入颜值(1-10):"))
    strong = int(input("请输入体质(1-10):"))
    iq = int(input("请输入智力(1-10):"))
    home = int(input("请输入家境(1-10):"))

    # 通过条件语句对于用户输入的属性值做出校验检查
    # 这段逻辑,使用elif是完全可以的,效果相同
    # elif 是多个分支只能进一个,一旦某个条件满足了,就不会再走其他分支了
    # 继续执行后续的条件判断
    if face < 1 or face > 10:
        print("颜值设置有误")
        continue  # 立即结束本次循环进入下次循环
    if strong < 1 or strong > 10:
        print("体质设置有误")
        continue
    if iq < 1 or iq > 10:
        print("智力设置有误")
        continue
    if home < 1 or home > 10:
        print("家境设置有误")
        continue

    # 四者相加大于20是有误的
    if face + strong + iq + home > 20:
        print("总属性值超过了20,设置有误")
        continue

    # 如果上述条件都没有触发,即玩家输入是合法的
    # 可以跳出循环结束循环啦
    print("初始属性输入完毕")
    print(f"颜值: {face}, 体质: {strong}, 智力: {iq}, 家境: {home}")
    break

# 生成角色的性别
# 使用 random.randint(beg, end),可以生产[begin, end] 随机整数
# 生成随机数 random 是一个Python中的模块(别人写好的代码直接给我们来用)
# 非要使用别人写好的模块吗
# 使用别人写好的,会比较简单方便
point = random.randint(1, 6)
if point % 2 == 1:
    gender = 'boy'
    print('你是一个男孩')
else:
    gender = 'girl'
    print('你是一个女孩')
# 原版还有未知性别(小概率)


# 设定角色的出生点
# 家境 随机数
# 家境 10 第一档 属性加成
# 家境 7 - 9 第二档 也有属性加成
# 家境 4 - 6 第三档 一点点属性加成
# 家境 1 - 3 第一档 扣属性加成

# 其他方式行不行呢 完全可以
# 实现一个游戏或者项目的时候,本身的逻辑并不复杂,具体的数据,数据平衡是复杂的
# 单机游戏还好
# 竞技游戏就相当复杂了

# 这些活是谁干的呢,游戏策划

# 为了简单,就直接生成 1-3 的随机数
# 来控制触发一些事件
point = random.randint(1, 3)
if home == 10:
    # 第一档
    print('你出生在帝都,你的父母是高官政要')
    home += 1
    iq += 1
    face += 1
    # 三分靠长相,七分靠打扮
elif 7 <= home <= 9:
    # 第二档
    if point == 1:
        print('你出生在大城市,父母是公务员')
        face += 2
    elif point == 2:
        print('你出生在大城市,父母是企业高管')
        home += 2
    else:
        print('你出生在大城市,父母是大学教授')
        iq += 2
elif 4 <= home <= 6:
    # 第三档
    if point == 1:
        print('你出生在三线城市,父母是医生')
        strong += 1
    elif point == 2:
        print('你出生在县城,你的父母是老师')
        iq += 1
    else:
        print('你出生在镇上,你的父母是个体户')
        home += 1
else:
    # 第四档
    if point == 1:
        print('你出生在农村,父母是辛苦劳作的农民')
        strong += 1
        face -= 2
    elif point == 2:
        print('你出生在穷乡僻壤,你的父母是无业游民')
        home -= 1
    else:
        print('你出生在镇上,你的父母感情不和')
        strong -= 1

print(f'颜值: {face}, 体质:{strong}, 智力: {iq}, 家境: {home}')

# 人生经历

# 幼年阶段[1, 10]  可塑性强
# 青年阶段[11, 20] 求学
# 壮年阶段[20, 50] 平稳
# 老年阶段 50年以上 颜值体质 智力显著退化~

# 幼年阶段
# 先使用一个循环,按照年龄,从1循环到10
# 每年发生一个事件
# 夭折(exit)
for age in range(1, 11):
    # 把一整年的打印都整理到一个字符串中,在这一年的结尾打印
    info = f'你今年{age}岁'
    # 生成一个[1, 3]的随机整数
    point = random.randint(1, 3)
    # 触发事件代码
    # 性别
    if gender == 'girl' and home <= 3 and point == 1:
        info += '你的家人重男轻女思想非常严重,你被抛弃了'
        print(info)
        print('游戏结束!')
        sys.exit(0)

    # 体质触发
    elif strong < 6 and point < 3:
        info += '你生了一场病'
        if home >= 5:
            info += '在父母的悉心照料下你痊愈了'
            strong += 1
            home -= 1
        else:
            info += '你的父母没精力管你,你的身体情况更糟糕了'
            strong -= 1

    # 颜值触发
    elif face <= 4 and age >= 7:
        info += '别的小朋友不喜欢你'
        if iq > 5:
            info += '你决定用学习填充自己'
            iq += 1
        else:
            if gender == 'boy':
                info += '你和别的小朋友经常打架'
                strong += 1
                iq -= 1
            else:
                info += '你经常被别的小朋友欺负'
                strong -= 1

    # 智商触发
    elif iq < 5:
        info += '你看起来傻傻的'
        if home >= 8 and age >= 6:
            info += '你的父母把你送到更好的学校学习'
            iq += 1
        elif 4 <= home <= 7:
            if gender == 'boy':
                info += '你的父母鼓励你多运动,争取成为运动员'
                strong += 1
            else:
                info += '你的父母鼓励你多打扮自己'
                face += 1
        else:
            # 家境 < 4
            info += '你的父母经常为此吵架'
            if point == 1:
                strong -= 1
            elif point == 2:
                iq -= 1
            else:
                pass


    # 所有条件都没触发
    # 健康成长
    else:
        info += '你健康成长'
        if point == 1:
            info += '你看起来更结实了'
            strong += 1;
        elif point == 2:
            info += '你看起来更好看了'
            face += 2
        else:
            # 无事发生
            pass

    # 打印这一年发生的事情
    print(info)
    print(f'颜值: {face}, 体质: {strong}, 智商: {iq}, 家境: {home}')
    print('------------------------------------------------')
    # 暂停一秒
    time.sleep(1)

# 以此类推,每一个年龄阶段通过随机数和遍历来触发一些属性


# 可以加大随机数来获取更多事件可能性
# 可以修改成类似环境闯关小游戏
# 今天 干了什么 遇到了什么 做了什么 触发老什么事件
# 只是提供例子,可以借助一些可视化接口(模块)来实现点击实现




